package com.ruoyi.project.wf.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.project.system.user.domain.User;
import com.ruoyi.project.wf.domain.WfProcessDef;
import com.ruoyi.project.wf.domain.WfProcessInst;
import com.ruoyi.project.wf.domain.WfWorkItem;
import com.ruoyi.project.wf.model.WorkitemSubmitDataWrapper;

import java.sql.Date;
import java.util.List;

/**
 * 流程审批信息Service接口
 *
 * @author XQ.XU
 * @date 2020-03-20
 */
public interface IWfWorkItemService extends IService<WfWorkItem>
{
    /**
     * 查询流程审批信息
     *
     * @param id 流程审批信息ID
     * @return 流程审批信息
     */
    public WfWorkItem selectWfWorkItemById(String id);

    /**
     * 查询流程审批信息列表
     *
     * @param wfWorkItem 流程审批信息
     * @return 流程审批信息集合
     */
    public List<WfWorkItem> selectWfWorkItemList(WfWorkItem wfWorkItem);

    /**
     * 新增流程审批信息
     *
     * @param wfWorkItem 流程审批信息
     * @return 结果
     */
    public int insertWfWorkItem(WfWorkItem wfWorkItem);

    /**
     * 修改流程审批信息
     *
     * @param wfWorkItem 流程审批信息
     * @return 结果
     */
    public int updateWfWorkItem(WfWorkItem wfWorkItem);

    /**
     * 批量删除流程审批信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteWfWorkItemByIds(String ids);

    /**
     * 删除流程审批信息信息
     *
     * @param id 流程审批信息ID
     * @return 结果
     */
    public int deleteWfWorkItemById(String id);

    public WfWorkItem submitStartWfWorkItem( String procInstId, Date trDate);
    public WfWorkItem submitStartWfWorkItem( WfProcessInst wfProcessInst,Date trDate);
    public List<WfWorkItem> findStartWfWorkItems(String processInstId, Date trDate);
    public int deleteWfWorkItemByProcInstId(String procInstId);

    public  List<WfWorkItem> selectWfWorkItemsByErrId(String errId);

    public WfWorkItem submitWfWorkItem(String currentItemId, WorkitemSubmitDataWrapper workitemResultDataWrapper, Date trDate);
}
